package com.ruoyi.system.domain;

import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.ruoyi.common.annotation.Excel;
import com.ruoyi.common.core.domain.BaseEntity;

/**
 * 合同退费列对象 sys_contract_refund
 *
 * @author ruoyi
 * @date 2025-06-29
 */
public class SysContractRefund extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private Long id;

    /** 合同退费编码 */
    @Excel(name = "合同退费编码")
    private String contractRefundCode;

    /** 退费总金额 */
    @Excel(name = "退费总金额")
    private Long totalMoney;

    /** 合同主键 */
    @Excel(name = "合同主键")
    private Long contractId;

    /** 合同编码 */
    @Excel(name = "合同编码")
    private String contractCode;

    /** 客户主键 */
    @Excel(name = "客户主键")
    private Long customerId;

    /** 客户编码 */
    @Excel(name = "客户编码")
    private String customerCode;

    /** 客户名称 */
    @Excel(name = "客户名称")
    private String customerName;

    /** 状态 */
    @Excel(name = "状态")
    private Long status;

    /** 校长主键 */
    @Excel(name = "校长主键")
    private Long cashierId;

    /** 校长审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "校长审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date cashierApproveTime;

    /** BSC主键 */
    @Excel(name = "BSC主键")
    private Long bscId;

    /** BSC审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "BSC审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date bscApproveTime;

    /** 财务主键 */
    @Excel(name = "财务主键")
    private Long financeId;

    /** 财务审核时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "财务审核时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date financeApproveTime;

    /** 合同退费明细集 */
    @Excel(name = "合同退费明细集")
    private List<SysContractRefundLabel> contractRefundLabelList;

    /** 管理费 */
    @Excel(name = "管理费")
    private Long controllerMoney;

    /** 退费合同集合 */
    @Excel(name = "退费合同集合")
    private List<SysContractRefundLog> contractRefundLogList;

    /** 是否内部 */
    @Excel(name = "是否内部")
    private Long isInternal;

    /** 挽单报告 */
    @Excel(name = "挽单报告")
    private SysContractRefundReport contractRefundReport;

    /** 合同课时 */
    @Excel(name = "合同课时")
    private Long classTime;

    /** 合同金额 */
    @Excel(name = "合同金额")
    private Long contractMoney;

    /** 已付金额 */
    @Excel(name = "已付金额")
    private Long payMoney;

    /** 年级 */
    @Excel(name = "年纪")
    private Long grade;

    private Long deductible;

    public Long getDeductible() {
        return deductible;
    }

    public void setDeductible(Long deductible) {
        this.deductible = deductible;
    }

    public Long getGrade() {
        return grade;
    }

    public void setGrade(Long grade) {
        this.grade = grade;
    }

    public Long getContractMoney() {
        return contractMoney;
    }

    public void setContractMoney(Long contractMoney) {
        this.contractMoney = contractMoney;
    }

    public Long getPayMoney() {
        return payMoney;
    }

    public void setPayMoney(Long payMoney) {
        this.payMoney = payMoney;
    }

    public Long getClassTime() {
        return classTime;
    }

    public void setClassTime(Long classTime) {
        this.classTime = classTime;
    }

    public SysContractRefundReport getContractRefundReport() {
        return contractRefundReport;
    }

    public void setContractRefundReport(SysContractRefundReport contractRefundReport) {
        this.contractRefundReport = contractRefundReport;
    }

    public Long getIsInternal() {
        return isInternal;
    }

    public void setIsInternal(Long isInternal) {
        this.isInternal = isInternal;
    }

    public List<SysContractRefundLog> getContractRefundLogList() {
        return contractRefundLogList;
    }

    public void setContractRefundLogList(List<SysContractRefundLog> contractRefundLogList) {
        this.contractRefundLogList = contractRefundLogList;
    }

    public String getContractCode() {
        return contractCode;
    }

    public void setContractCode(String contractCode) {
        this.contractCode = contractCode;
    }

    public Long getCustomerId() {
        return customerId;
    }

    public void setCustomerId(Long customerId) {
        this.customerId = customerId;
    }

    public String getCustomerCode() {
        return customerCode;
    }

    public void setCustomerCode(String customerCode) {
        this.customerCode = customerCode;
    }

    public String getCustomerName() {
        return customerName;
    }

    public void setCustomerName(String customerName) {
        this.customerName = customerName;
    }

    public Long getControllerMoney() {
        return controllerMoney;
    }

    public void setControllerMoney(Long controllerMoney) {
        this.controllerMoney = controllerMoney;
    }

    public List<SysContractRefundLabel> getContractRefundLabelList() {
        return contractRefundLabelList;
    }

    public void setContractRefundLabelList(List<SysContractRefundLabel> contractRefundLabelList) {
        this.contractRefundLabelList = contractRefundLabelList;
    }

    public void setId(Long id)
    {
        this.id = id;
    }

    public Long getId()
    {
        return id;
    }

    public void setContractRefundCode(String contractRefundCode)
    {
        this.contractRefundCode = contractRefundCode;
    }

    public String getContractRefundCode()
    {
        return contractRefundCode;
    }

    public void setTotalMoney(Long totalMoney)
    {
        this.totalMoney = totalMoney;
    }

    public Long getTotalMoney()
    {
        return totalMoney;
    }

    public void setContractId(Long contractId)
    {
        this.contractId = contractId;
    }

    public Long getContractId()
    {
        return contractId;
    }

    public void setStatus(Long status)
    {
        this.status = status;
    }

    public Long getStatus()
    {
        return status;
    }

    public void setCashierId(Long cashierId)
    {
        this.cashierId = cashierId;
    }

    public Long getCashierId()
    {
        return cashierId;
    }

    public void setCashierApproveTime(Date cashierApproveTime)
    {
        this.cashierApproveTime = cashierApproveTime;
    }

    public Date getCashierApproveTime()
    {
        return cashierApproveTime;
    }

    public void setBscId(Long bscId)
    {
        this.bscId = bscId;
    }

    public Long getBscId()
    {
        return bscId;
    }

    public void setBscApproveTime(Date bscApproveTime)
    {
        this.bscApproveTime = bscApproveTime;
    }

    public Date getBscApproveTime()
    {
        return bscApproveTime;
    }

    public void setFinanceId(Long financeId)
    {
        this.financeId = financeId;
    }

    public Long getFinanceId()
    {
        return financeId;
    }

    public void setFinanceApproveTime(Date financeApproveTime)
    {
        this.financeApproveTime = financeApproveTime;
    }

    public Date getFinanceApproveTime()
    {
        return financeApproveTime;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
                .append("id", getId())
                .append("contractRefundCode", getContractRefundCode())
                .append("totalMoney", getTotalMoney())
                .append("contractId", getContractId())
                .append("status", getStatus())
                .append("createBy", getCreateBy())
                .append("createTime", getCreateTime())
                .append("cashierId", getCashierId())
                .append("cashierApproveTime", getCashierApproveTime())
                .append("bscId", getBscId())
                .append("bscApproveTime", getBscApproveTime())
                .append("financeId", getFinanceId())
                .append("financeApproveTime", getFinanceApproveTime())
                .toString();
    }
}